<?php

/**
 * @APP@
 *
 * @package Page
 */
require_once 'App.php';

/**
 * AJAXサービス
 *
 * <pre>
 * clickイベントに応じて、返すbear.jsコマンド(JSON)を変えています。
 * </pre>
 *
 * @package Page
 * @author  $Author:$
 * @version SVN: Release: $Id:$
 */
class Page_User_Follower_Index extends App_Page
{

    /**
     * AJAXハンドラ
     *
     * @var BEAR_Page_Ajax
     */
    private $_ajax = array();

    /**
     * インジェクタ
     *
     * @return void
     */
    public function onInject()
    {
        $this->injectGet('tab', 'tab', 'to');
        // ユーザーIDを$_GETからインジェクト
        $this->injectGet('user_id');
        $this->_user_id = isset($_GET['user_id']) ? $_GET['user_id'] : '';
        parent::onInject();
     }


    /**
     * フォロー追加
     *
     * <pre>
     * $args['click'] フォローするユーザーID
     * </pre>
     *
     * @return void
     */
    public function onClickCreate(array $args)
    {
        $this->_ajax = BEAR::dependency('BEAR_Page_Ajax', $this->_ajax);
//        $this->_ajax->checkSecurity();
        $followId =  $args['click'];
        assert(is_int($args['click']));
        $values['user_name'] = $args['auth']['user_name'];
        $values['user_id'] = $args['auth']['id'];
        $values['follow_id'] = $followId;
        $params = array('uri' => 'User', 'values' => array('id' => $followId));
        $followUser = $this->_resource->read($params)->getBody();
        $values['follow_name'] = $followUser['user_name'];
        $params = array('uri' => 'User/Follower/To', 'values'=>$values);
        $this->_resource->create($params)->request();
        $this->_ajax->addAjax('html', array('ajax_request' => "*フォロー中*" ), array(
            'effect' => 'show'));
        $this->output('ajax');
        $this->end();
    }

    /**
     * フォロワー解除
     *
     * @requierd click フォロー解除するユーザーID
     *
     * @return void
     */
    public function onClickDelete(array $args)
    {
        $this->_ajax = BEAR::dependency('BEAR_Page_Ajax', $this->_ajax);
        $this->_ajax->checkSecurity();
        $followId =  $args['click'];
        assert(is_int($args['click']));
        $values['user_name'] = $args['auth']['user_name'];
        $values['user_id'] = $args['auth']['id'];
        $values['follow_id'] = $followId;
        $params = array('uri' => 'User', 'values'=>array('id'=>$followId));
        $followUser = $this->_resource->read($params)->getBody();
        $values['follow_name'] = $followUser['user_name'];
        $params = array('uri' => 'User/Follower/To', 'values'=>$values);
        $this->_resource->delete($params)->request();
        $this->_ajax->addAjax('html', array('ajax_request' => "フォロー解除しました" ), array(
            'effect' => 'show'));
        $this->output('ajax');
        $this->end();
    }

    /**
     * 初期化
     *
     * @param array $args
     * @return void
     *
     * @required tab      タブ
     * @required user_id  ユーザーID
     */
    public function onInit(array $args)
    {
        $values['id'] = $args['user_id'];
        $link = ($args['tab'] === 'to') ?  'follower_to' :  'follower_from';
        $params = array('uri' => 'User', 'values' => $values);
        $ro = $this->_resource->read($params)->link($link)->getBody(true);
        $this->set('args', $args);
        $this->set('tab', $args['tab']);
        // 対象ユーザー
        $this->set('user_id', $args['user_id']);
        $this->set('user', $ro['user']);
        // フォロワー (from or to)
        $this->set('users', $ro[$link]);
    }
}

App_Main::run('Page_User_Follower_Index');